package com.xbongbong.workflow.service.strategy.data;

import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.pro.formdata.pojo.SaasNeedRedundantAttrPojo;
import com.xbongbong.workflow.pojo.WorkflowTransferPOJO;

import java.util.List;

/**
 * 工作流数据处理 策略
 * @author 魏荣杰
 *
 */
public interface WorkflowDataProcessStrategy {

    /**
     * Description: 工作流数据操作策略类型
     * @param
     * @return java.lang.String
     * @throws
     * @author 魏荣杰
     * @date 2021/7/12 16:54
     */
    List<Integer> type();
    
    /**
     * Description: 数据保存，工作流结束后操作
     * @param
     * @param workflowTransferPOJO
     * @param saasNeedRedundantAttrPojo
     * @return void
     * @throws 
     * @author 魏荣杰
     * @date 2021/7/12 16:50
     */
    void save(WorkflowTransferPOJO workflowTransferPOJO, SaasNeedRedundantAttrPojo saasNeedRedundantAttrPojo) throws XbbException;
    
    /**
     * Description: 数据编辑，工作流结束后操作
     * @param
     * @param workflowTransferPOJO
     * @param saasNeedRedundantAttrPojo
     * @return void
     * @throws 
     * @author 魏荣杰
     * @date 2021/7/12 16:51
     */
    void update(WorkflowTransferPOJO workflowTransferPOJO, SaasNeedRedundantAttrPojo saasNeedRedundantAttrPojo) throws XbbException;
    
    /**
     * Description: 数据编辑进工作流，拒绝后操作
     * @param taskId
     * @param workflowTransferPOJO
     * @return void
     * @throws XbbException
     * @author 魏荣杰
     * @date 2021/7/12 16:53
     */
    void updateBack(Long taskId, WorkflowTransferPOJO workflowTransferPOJO) throws XbbException;

    /**
     * 审批不通过（拒绝，撤回）
     * @param taskId
     * @param workflowTransferPOJO
     * @param taskType
     * @throws XbbException
     */
    void approvalFailed(Long taskId, WorkflowTransferPOJO workflowTransferPOJO, Integer taskType) throws XbbException;
}
